package com.briup.server.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.briup.server.domain.bean.RentalInfos;
import com.baomidou.mybatisplus.extension.service.IService;
import com.briup.server.domain.dto.RentalAppointmentDTO;
import com.briup.server.domain.dto.RentalApprovalDTO;
import com.briup.server.domain.dto.RentalQueryDTO;
import com.briup.server.domain.vo.RentalInfoVO;
import jakarta.validation.Valid;

public interface RentalInfosService extends IService<RentalInfos> {

    /**
     * 预约实验室
     *
     * @param dto 预约信息
     */
    void appointment(RentalAppointmentDTO dto);

    /**
     * 查询预约信息
     *
     * @param dto 查询参数
     * @return 预约信息分页列表
     */
    Page<RentalInfoVO> queryRentalInfos(RentalQueryDTO dto);

    /**
     * 审核预约信息
     *
     * @param dto 审核信息
     */
    void approval(@Valid RentalApprovalDTO dto);

    /**
     * 自动审核预约信息，根据预约时间和当前时间判断是否自动通过预约；
     * 如果预约的时间段的开始时间，距离当前时间小于等于30分钟，则自动通过预约；
     */
    void autoApproval();
}
